package com.freshman_registration.controller;

import com.freshman_registration.pojo.Notice;
import com.freshman_registration.service.NoticeService;
import com.freshman_registration.util.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@RestController
@RequestMapping("/api/notice")
public class NoticeController {
    @Autowired
    private NoticeService noticeService;

    /**
     * 添加公告
     * @param notice 公告实体对象
     * @return 包含操作结果的Result对象
     */
    @PostMapping("/insert")
    public Result<?> insertNotice(@RequestBody Notice notice) {
        return noticeService.insertNotice(notice);
    }

    /**
     * 更新公告
     * @param notice 公告实体对象
     * @return 包含操作结果的Result对象
     */
    @PutMapping("/update")
    public Result<?> updateNotice(@RequestBody Notice notice) {
        return noticeService.updateNotice(notice);
    }

    /**
     * 根据ID查询公告
     * @param id 公告ID
     * @return 包含公告信息的Result对象
     */
    @GetMapping("/{id}")
    public Result<?> getNoticeById(@PathVariable("id") Integer id) {  // 关键修复
        return noticeService.getNoticeById(id);
    }

    /**
     * 查询公告列表
     * @return 包含公告列表的Result对象
     */
    @GetMapping("/list")
    public Result<?> getNoticeList() {
        return noticeService.getNoticeList();
    }
    @GetMapping("/student/list")
    public Result<?> getNoticeStudentList() {
        return noticeService.getNoticeStudentList();
    }
    /**
     * 条件查询公告（支持模糊查询）
     * @param title 标题（模糊查询）
     * @param content 内容（模糊查询）
     * @param publisherId 发布者ID
     * @param isShow 是否显示
     * @return 符合条件的公告列表
     */
    @GetMapping("/search")
    public List<Notice> listNotices(
            @RequestParam(required = false) String title,
            @RequestParam(required = false) String content,
            @RequestParam(required = false) Integer publisherId,
            @RequestParam(required = false) Integer isShow,
            @RequestParam(required = false) String workNo
    ) {
        return noticeService.queryNotices(title, content, publisherId, isShow, workNo);
    }

    // 学生查询（只能查已发布的）
    @GetMapping("/search/list")
    public List<Notice> studentList(
            @RequestParam(required = false) String title,
            @RequestParam(required = false) String content
    ) {
        return noticeService.queryPublishedNotices(title, content);
    }

    /**
     * 删除公告
     * @param id 公告ID
     * @return 包含操作结果的Result对象
     */
    @DeleteMapping("/{id}")
    public Result<?> deleteNotice(@PathVariable("id") Integer id) {  // 显式指定参数名
        return noticeService.deleteNotice(id);
    }
}
